package com.springMVCStudy.jsp;

import jakarta.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/jsp")
public class JSPController {

    /*
    快速查找视图：
    1、方法的返回值是字符串类型
    2、不能添加@ResponseBody，因为这样会直接返回字符串给浏览器，不走视图解析器
    3、返回值，对应中间（前缀-中间-后缀）的视图名称即可
     */
    @GetMapping("/index")
    public String index(HttpServletRequest request) {
        request.setAttribute("data", "Hello jsp...");
        System.out.println("JspController.index");
        return "/index";
    }

    /*
    转发：
    1、方法的返回值是字符串类型
    2、不能添加@ResponseBody，因为这样会直接返回字符串给浏览器，不走视图解析器
    3、返回值，forward:/转发地址
     */
    @GetMapping("/forward")
    public String forward() {
        System.out.println("JspController.forward");
        return "forward:/jsp/index";
    }

    /*
    重定向：
    1、方法的返回值是字符串类型
    2、不能添加@ResponseBody，因为这样会直接返回字符串给浏览器，不走视图解析器
    3、返回值，redirect:/转发地址
    路径细节：
    转发是项目下的资源跳转，路径：转发是转发项目下的地址，不需要带项目名
    而重定向可以是项目下的地址也可以是项目外的地址，重定向是二次请求。所以，路径：全地址
    springMVC路径语法：
    重定向也不需要带项目名，转发和重定向地址一样了
     */
    @GetMapping("/redirect")
    public String redirect() {
        System.out.println("JspController.redirect");
        return "redirect:/jsp/index";
    }

    @GetMapping("/baidu")
    public String baidu() {
        System.out.println("JspController.baidu");
        return "redirect:http://www.baidu.com";
    }



}
